总结包含以下内容:i++
和++i
的区别,i++
和++i
在循环中的区别,arr[i++]
和arr[++i]
在循环中的区别,arr[i++]+=1
和arr[++i]+=1
在循环中的区别,arr[i++]
的使用
前几天做Canvas倒计时的时候,慕课网的老师讲到了一个及时清除不在画布中的小球的做法。以下是实现代码:
1 2 3 4 5 6 7 8 9 10 11 12
| var cnt=0 for(var i=0;i<balls.length;i++){ if(balls[i].x+radius>0&&balls[i].x-radius<canvasWidth){ balls[cnt++]=balls[i]; } } while(balls.length>cnt){ balls.pop(); }
|
arr[i++]
是什么呢?于是开始一步一步地探索
i++和++i
大一的时候上java课,老师讲过了这样的题,想必学过计算机相关的都知道 (/▽╲)
1 2 3 4 5 6 7 8 9 10 11
| var a=1; var b=2; a=b++; console.log("a的值是:"+a+","+"b的值是:"+b); var c=1; var d=2; c=++d; console.log("c的值是:"+c+","+"d的值是:"+d);
|
a=b++
是b先把值赋给a,自身再加1;a=++b
是b先自身加1,再把值赋给a
i++和++i 在循环中的区别
1 2 3 4 5 6
| var arr=[11,12,13,14,15,16]; for(var i=0;i<arr.length;i++){ console.log(i++); }
|
1 2 3 4 5 6
| var arr=[11,12,13,14,15,16]; for(var i=0;i<arr.length;i++){ console.log(++i); }
|
arr[i++]和arr[++i]在循环中的区别
1 2 3 4 5 6
| var arr=[11,12,13,14,15,16]; for(var i=0;i<arr.length;i++){ console.log(arr[i++]); }
|
1 2 3 4 5 6
| var arr=[11,12,13,14,15,16]; for(var i=0;i<arr.length;i++){ console.log(arr[++i]); }
|
如果数组是奇数个,那么输出arr[++i]
的最后一个数会是一个undefined
arr[i++]+=1和arr[++i]+=1在循环中的区别
1 2 3 4 5 6 7
| var arr=[1,2,3]; for(var i=0;i<arr.length;i++){ arr[i++]+=1; } console.log(arr);
|
1 2 3 4 5 6 7
| var arr=[1,2,3]; for(var i=0;i<arr.length;i++){ arr[++i]+=1; } console.log(arr);
|
由于数组是奇数个,所以最后arr[++i]+=1
最后的输出结果是NaN,可以通过以下的代码验证
1 2
| console.log(undefined+1);
|
arr[i++]的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| var arr=[ {x: 1}, {x: 5}, {x: 9}, {x: 3}, {x: 10}, {x: 6} ] var cnt=0; for(var i=0;i<arr.length;i++){ if(arr[i].x<4){ arr[cnt++]=arr[i]; console.log('cnt的值是'+cnt+',i的值是'+i); } } while(arr.length>cnt){ arr.pop(); } console.log(arr);
|
这说明了第0到cnt-1个留在arr中,cnt到arr.length-1的数组删除,使用这个技巧就可以来去除不符合判断语句的数组了